package com.alexd.leetcode.contest.week102;


/*
905. 按奇偶校验排序数组
用户通过次数 0
用户尝试次数 0
通过次数 0
提交次数 0
题目难度 Easy
给定一个非负整数数组 A，返回一个由 A 的所有偶数元素组成的数组，后面跟 A 的所有奇数元素。

你可以返回满足此条件的任何数组作为答案。

 

示例：

输入：[3,1,2,4]
输出：[2,4,3,1]
输出 [4,2,3,1]，[2,4,1,3] 和 [4,2,1,3] 也会被接受。
 

提示：

1 <= A.length <= 5000
0 <= A[i] <= 5000
*/
public class Solution1 {
	
	
	static void swap(int[] ary,int x,int y) {
        int temp = ary[x];
        ary[x] = ary[y];
        ary[y] = temp;
    }

	public int[] sortArrayByParity(int[] A) {
		int cntEven = 0;
        for (int i = 0; i < A.length; i++) {
			if(A[i] % 2 == 0) {
				cntEven++;
			}
		}
        for (int i = 0,j = cntEven; j < A.length && i < j; ) {
        	if(A[i] % 2 == 0) {
        		i++;
        	}else {
				swap(A, i, j);
				j++;
			}
        }
        return A;
        
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] in = {3,5,1,2,4};
		for(int i : new Solution1().sortArrayByParity(in)) {
			System.out.println(i);
		}
	}

}
